package  com.vinjune.algorithm.sort;

/**
 * @author 作者：zhangwenjun
 * @version 创建时间：2016年1月21日 下午5:08:59 类说明
 */

public class Quicksort2 {
	public static void main(String[] args) {

		int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1, 8 };
		System.out.println("排序之前：");
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		// 快速排序
		quicksort(a, 0, a.length - 1);
		
		System.out.println("");
		System.out.println("排序之后：");
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}

	}

	public static void quicksort(int number[], int left, int right) {
		int i, j, s, temp;
		if (left < right) {
			s = number[(left + right) / 2];
			i = left - 1;
			j = right + 1;
			while (true) {
				while (number[++i] < s); // 向右找
				while (number[--j] > s); // 向左找
				if (i >= j)
					break;
				temp = number[i];
				number[i] = number[j];
				number[j] = temp;
			}
			quicksort(number, left, i - 1); // 对左边进行递回
			quicksort(number, j + 1, right); // 对右边进行递回
		}

	}
}
